﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//main函数 
// F10按了之后，代码就开始执行了 
// main函数是程序的入口，C语言程序是从main函数的第一行开始执行
//int main()
//{
//	printf("hello bit\n");
//	printf("hello world\n");
//	printf("hello C\n");
//	printf("hello hanchuan\n");
//	printf("hello bit\n");
//	printf("hello world\n");
//	printf("hello C\n");
//	printf("hello hanchuan\n");
//	return 0;
//}
//int main() {
//	printf("hello world\n");
//	return 0;
//}
//main函数虽然重要，但有且只有一个
//int表示main函数结束的时候会返回一个整数

//写c语言代码，主要先把框架写出来
//#include<stdio.h>
//int main()
//{
//	//
//	return 0;
//}

//main函数常见错误
// 字母错误mian或者漏掉main后面的括号main()  
// 代码中不能使用中文符号，比如括号和分号()->（）;->； 
//一条结束语后，有分号; 

//main函数的多种写法
//1.-古老的写法-
//void main()
//{
//	printf("hello world\n");
//}
//void表示void函数结束时会返回空

//2.知识的参数多了void，这里的void表示main函数没有参数
//int main(void)
//{
//	return 0;
//}

//3.其实main函数可以有参数，他的参数是有特殊意义，如果你想使用main函数的参数就可以写上
// 如果不想使用，那就不写
//暂时不需要了解main函数的参数
//int main(int argc, char* argv[])
//{
//	return 0;
//}

//printf 是函数-C语言的标准库中提供的现成的函数 - 库函数
//功能:在屏幕上打印信息
//print format -安装格式来打印信息
//""括起来的一串字符被称为字符串
//\n是换行符
//int main()
//{
//	printf("hello bit\n");
//	printf("hello world\n");
//	printf("hehe\n");
//	return 0;

//}

//%d - 打印整数
//%c - 打印字符
//%f - 打印小数
//%s - 打印字符串
#include<stdio.h>
//std - standard - 标准
//i input - 输入
//o output - 输出
//h header -- 请求头部
//库函数:为了不再重复实现常见的代码，让程序员提升开发效率，C语言标准规定了一组函数，这些函数再由不同的编译器厂商根据标准进行实现，提供给程序员使用。这些函数组成了一个函数库，被称为标准库，这些函数数也被称为库函数。
//int main()
//{
//	printf("hehe\n");
//	printf("%s\n", "haha");
//	printf("%d\n,100");//双引号""括起来的一串字符被称为字符串
//	printf("%c\n", 'q');//单引号''括起来的叫字符
//	printf("%f\n", 3.14);//%f 默认小数点后会打印6位
//	return 0;
//} 
//int main()
//{
//	//'a';
//	//'q';
//	//'b';
//	printf("%c\n",'c');
//	printf("%c\n", 100);
//	return 0;
//}
//字符 A~Z的ASCII码值从65~90
//字符 a~z的ASCII码值从97~122
//对应的大小写字符(a和A)的ASCII码值的差值是32
//数字字符0~9的ASCII码值从48~57
//换行\n 的ASCII值是 : 10中
//在这些字符中ASCII码值从0~31这32个字符是不可打印字符，无法打印在屏幕上观察

//int main()
//{
//	//打印32-127ASCII值
//	//使用for循环
//	int i = 0;
//	for (i = 32;i <= 127;i++)
//	{
//		printf("%c ", i);
//		if (i % 16 == 15)
//			printf("\n");
//	}
//	return 0;
//}

//打印40-80ASCII值
	//使用for循环
//int main()
//{
//	int i = 0;
//	for (i = 40;i <= 80;i++)
//	{
//		printf("%c ", i);
//		if (i % 16 == 15)
//			printf("\n");
//	}
//	return 0;
//}

//int main()
//{
//	printf("%s\n", "abcdef");//末尾隐藏一个\0表示字符串的结束,strlen() 计算字符串长度遇到\n会停止计算
//	printf("abcdef");
//	return 0;
//}

//字符串可以存放在字符数组中
//strlen()是一个库函数，求字符串的长度，统计的是字符串\0之前的字符串个数
//string.h
//strlen 返回的值是size_t类型的，应该使用%zd
//#include<string.h>
//int main()
//{
//	char arr1[] = "abcdef";//arr1中包含\0
//	char arr2[] = { 'a','b','c','d','e','f'};//arr2中没有\0
//	//printf("%s\n", arr1);
//	//printf("%s\n", arr2);
//	printf("%zd\n", strlen(arr1));//6
//	printf("%zd\n", strlen(arr2));//?
//	return 0;
//}

//int main()
//{
//	//printf("abcndef");
//	printf("abc\ndef");//\n是换行符属于转义字符
//	return 0;
// }

//在支持三字母的编译器上
//??) --> ]
//??( --> [
//int main()
//{
//	printf("(are you ok\?\?)");//(are you ok) \?在书写连续多个问号时使⽤ 防止他们被解析城三字母词
//	//(are you ok??)
//	return 0;
//}

//int main()
//{
	//printf("%c\n", 'a');
	//printf("%c\n", 'b');
	//printf("%c\n", '\''); // \'表示字符常量'
	//printf("%c\n", "abc");
	//printf("%c\n", "a");
	//printf("%s\n", "\""); // \"表示一个字符串内部的双引号
	//printf("c:\\test\\bit"); // \\表示一个反斜杠，防止它被解释为一个转义序列符
	//printf("\a"); // \a警报符使得电脑终端发出警报声或出现闪烁，或者两者同时发生
	//printf("abcdbef\n"); // \n换行符
	//printf("abcd\bef\n"); // \b退格键，光标回退⼀个字符，但不删除字符。
	//printf("abcdef\r"); // \r回⻋符，光标移到同⼀⾏的开头
	//printf("a\tbc\tdef\tqq"); // \t制表符，光标移到下⼀个⽔平制表位，通常是下⼀个4/8的倍数。补的空格为补够一个\t的长度
	//printf("%c\n", '\130');//将\后的8进制数字转换成10进制的数字，这个数字作为ASCII码值表示的字符就是
	//printf("%c\n", '\77'); //将\后的16进制数字转换成8进制的数字，这个数字作为ASCII码值表示的字符就是
	//printf("%c\n", '\x36'); //6
	//printf("%c\n", '\0'); // \0表示\后面跟了一个8进制数字 null 字符，代表没有内容， \0 就是 \ddd 这类转义字符的⼀种，⽤于字符串的结束标志，其ASCII码值是0
	//return 0;
//}

//#include<string.h>
//int main()
//{
//	printf("%zd\n", strlen("abcdef"));//6
//	printf("%zd\n", strlen("c:\test\bit\114\test.c"));//16
//	printf("%zd\n", strlen("c:\test\bit\118\test.c"));//17
//	return 0;
//}

//#include<stdio.h>
// main函数也叫主函数
//int main()
//{
//	printf("abcdef\b");
//	return 0;
//}
//C语⾔的代码是由⼀条⼀条的语句构成的，
// C语⾔中的语句可为以下五类：
//1.空语句,一个分号就是一条语句，是空语句
//2.表达式语句,表达式语句就是在表达式的后边加上分号。
//3.函数调用语句，函数调⽤的时候，也会加上分号，就是函数调⽤语句。
//4.复合语句，复合语句其实就是前⾯讲过的代码块，成对括号中的代码就构成⼀个代码块，也被称为复合语句。
//5.控制语句,控制语句⽤于控制程序的执⾏流程，以实现程序的各种结构⽅式（C语⾔⽀持三种结构：顺序结构、选
//择结构、循环结构），它们由特定的语句定义符组成，C语⾔有九种控制语句。
//可分成以下三类：
//1. 条件判断语句也叫分⽀语句：if语句、switch语句；
//2. 循环执⾏语句：do while语句、while语句、for语句；
//3. 转向语句：break语句、goto语句、continue语句、return语句。

//13. 注释是什么？为什么写注释？
//注释是对代码的说明，编译器会忽略注释，也就是说，注释对实际代码没有影响。
//注释是给程序员⾃⼰，或者其他程序员看的。
//好的注释可以帮我们更好的理解代码，但是也不要过度注释，不要写没必要的注释。
//当然不写注释可能会让后期阅读代码的⼈抓狂。
//写注释⼀定程度上反应了程序作者的素质，建议⼤家写必要的注释，在未来找⼯作的时候，写代码时
//留下必要的注释也会给⾯试官留下更好的印象。

//13.1 注释的2种形式
//C 语⾔的注释有两种表⽰⽅法。
//13.1.1 /**/ 的形式
//第⼀种⽅法是将注释放在 /*...*/ 之间，内部可以分⾏。
/*
int main()
{
	int a = 10; //创建整型类型的变量，名字叫a，并赋值为10
	printf("abcdef\b");
	return 0;
}
*/ //这种注释不支持嵌套

//13.1.2 // 的形式
//第⼆种写法是将注释放在双斜杠 // 后⾯，从双斜杠到⾏尾都属于注释。这种注释只能是单⾏，可以
//放在⾏⾸，也可以放在⼀⾏语句的结尾。这是 C99 标准新增的语法。
//int main()
//{
//	int a = 10; //创建整型类型的变量，名字叫a，并赋值为10
//	printf("abcdef\b");
//	return 0;
//}

//13.2 注释会被替换
//编译时，注释会被替换成⼀个空格，相当于删除
// 所以 min/* 这⾥是注释*/Value 会变成 min Value ，⽽不是 minValue 。

//#include <stdio.h>
//#include <string.h>
//int main()
//{
//	char arr[] = { 'b', 'i', 't' };
//	printf("%d\n", strlen(arr));
//	return 0;
//}